using System;
using MicrosoftResearch.Infer;
using MicrosoftResearch.Infer.Distributions;
using MicrosoftResearch.Infer.Collections;
using MicrosoftResearch.Infer.Factors;

namespace MicrosoftResearch.Infer.Models.User
{
	/// <summary>
	/// Class for performing inference in model 'Model' using algorithm 'ExpectationPropagation'.
	/// </summary>
	/// <remarks>
	/// The easiest way to use this class is to wrap an instance in a CompiledAlgorithm object and use
	/// the methods on CompiledAlgorithm to set parameters and execute inference.
	/// 
	/// If you instead wish to use this class directly, you must perform the following steps:
	/// 1) Create an instance of the class
	/// 2) Set the value of any externally-set fields e.g. data, priors
	/// 3) Call the Reset() method
	/// 4) Call the Initialise() method once
	/// 5) Call the Update() method multiple times  - each call performs one iteration of inference
	/// 6) Use the XXXMarginal() methods to retrieve posterior marginals for different variables.
	/// 
	/// Generated by Infer.NET 2.3 beta 4 at 19:26 on 29 May 2010.
	/// </remarks>
	public class Model61_EP : IIterativeProcess
	{
		#region Fields
		// Messages from uses of 'vbool149'
		public Bernoulli[] vbool149_uses_B;
		// The constant 'vBernoulli157'
		public Bernoulli vBernoulli157;
		// Message from definition of 'vbool149'
		public Bernoulli vbool149_F;
		// Messages from uses of 'vbool167'
		public Bernoulli[] vbool167_uses_B;
		// The constant 'vBernoulli175'
		public Bernoulli vBernoulli175;
		// Message from definition of 'vbool167'
		public Bernoulli vbool167_F;
		// Messages from uses of 'vbool431'
		public Bernoulli[] vbool431_uses_B;
		// Message from definition of 'vbool431'
		public Bernoulli vbool431_F;
		// Messages from uses of 'vbool84'
		public Bernoulli[] vbool84_uses_B;
		// The constant 'vBernoulli92'
		public Bernoulli vBernoulli92;
		// Message from definition of 'vbool84'
		public Bernoulli vbool84_F;
		// Messages from uses of 'vbool470'
		public Bernoulli[] vbool470_uses_B;
		// Message from definition of 'vbool470'
		public Bernoulli vbool470_F;
		// Messages from uses of 'vbool175'
		public Bernoulli[] vbool175_uses_B;
		// The constant 'vBernoulli183'
		public Bernoulli vBernoulli183;
		// Message from definition of 'vbool175'
		public Bernoulli vbool175_F;
		// Messages from uses of 'vbool439'
		public Bernoulli[] vbool439_uses_B;
		// Message from definition of 'vbool439'
		public Bernoulli vbool439_F;
		// Messages from uses of 'vbool76'
		public Bernoulli[] vbool76_uses_B;
		// The constant 'vBernoulli84'
		public Bernoulli vBernoulli84;
		// Message from definition of 'vbool76'
		public Bernoulli vbool76_F;
		// Messages from uses of 'vbool334'
		public Bernoulli[] vbool334_uses_B;
		// Message from definition of 'vbool334'
		public Bernoulli vbool334_F;
		// Messages from uses of 'vbool97'
		public Bernoulli[] vbool97_uses_B;
		// The constant 'vBernoulli105'
		public Bernoulli vBernoulli105;
		// Message from definition of 'vbool97'
		public Bernoulli vbool97_F;
		// Messages from uses of 'vbool469'
		public Bernoulli[] vbool469_uses_B;
		// Message from definition of 'vbool469'
		public Bernoulli vbool469_F;
		// Messages from uses of 'vbool58'
		public Bernoulli[] vbool58_uses_B;
		// The constant 'vBernoulli66'
		public Bernoulli vBernoulli66;
		// Message from definition of 'vbool58'
		public Bernoulli vbool58_F;
		// Messages from uses of 'vbool318'
		public Bernoulli[] vbool318_uses_B;
		// Message from definition of 'vbool318'
		public Bernoulli vbool318_F;
		// Messages from uses of 'vbool120'
		public Bernoulli[] vbool120_uses_B;
		// The constant 'vBernoulli128'
		public Bernoulli vBernoulli128;
		// Message from definition of 'vbool120'
		public Bernoulli vbool120_F;
		// Messages from uses of 'vbool342'
		public Bernoulli[] vbool342_uses_B;
		// Message from definition of 'vbool342'
		public Bernoulli vbool342_F;
		// Messages from uses of 'vbool50'
		public Bernoulli[] vbool50_uses_B;
		// The constant 'vBernoulli58'
		public Bernoulli vBernoulli58;
		// Message from definition of 'vbool50'
		public Bernoulli vbool50_F;
		// Messages from uses of 'vbool310'
		public Bernoulli[] vbool310_uses_B;
		// Message from definition of 'vbool310'
		public Bernoulli vbool310_F;
		// Messages from uses of 'vbool128'
		public Bernoulli[] vbool128_uses_B;
		// The constant 'vBernoulli136'
		public Bernoulli vBernoulli136;
		// Message from definition of 'vbool128'
		public Bernoulli vbool128_F;
		// Messages from uses of 'vbool326'
		public Bernoulli[] vbool326_uses_B;
		// Message from definition of 'vbool326'
		public Bernoulli vbool326_F;
		// Messages from uses of 'vbool136'
		public Bernoulli[] vbool136_uses_B;
		// The constant 'vBernoulli144'
		public Bernoulli vBernoulli144;
		// Message from definition of 'vbool136'
		public Bernoulli vbool136_F;
		// Messages from uses of 'vbool350'
		public Bernoulli[] vbool350_uses_B;
		// Message from definition of 'vbool350'
		public Bernoulli vbool350_F;
		// Messages from uses of 'vbool6'
		public Bernoulli[] vbool6_uses_B;
		// The constant 'vBernoulli14'
		public Bernoulli vBernoulli14;
		// Message from definition of 'vbool6'
		public Bernoulli vbool6_F;
		// Messages from uses of 'vbool294'
		public Bernoulli[] vbool294_uses_B;
		// Message from definition of 'vbool294'
		public Bernoulli vbool294_F;
		// Messages from uses of 'vbool358'
		public Bernoulli[] vbool358_uses_B;
		// Message from definition of 'vbool358'
		public Bernoulli vbool358_F;
		// Messages from uses of 'vbool24'
		public Bernoulli[] vbool24_uses_B;
		// The constant 'vBernoulli32'
		public Bernoulli vBernoulli32;
		// Message from definition of 'vbool24'
		public Bernoulli vbool24_F;
		// Messages from uses of 'vbool366'
		public Bernoulli[] vbool366_uses_B;
		// Message from definition of 'vbool366'
		public Bernoulli vbool366_F;
		// Messages from uses of 'vbool32'
		public Bernoulli[] vbool32_uses_B;
		// The constant 'vBernoulli40'
		public Bernoulli vBernoulli40;
		// Message from definition of 'vbool32'
		public Bernoulli vbool32_F;
		// Messages from uses of 'vbool302'
		public Bernoulli[] vbool302_uses_B;
		// Message from definition of 'vbool302'
		public Bernoulli vbool302_F;
		// Message to definition of 'vbool431'
		public Bernoulli vbool431_B;
		// Messages to uses of 'vbool167'
		public Bernoulli[] vbool167_uses_F;
		// Message to definition of 'vbool470'
		public Bernoulli vbool470_B;
		// Messages to uses of 'vbool84'
		public Bernoulli[] vbool84_uses_F;
		// Messages to uses of 'vbool149'
		public Bernoulli[] vbool149_uses_F;
		// Message to definition of 'vbool439'
		public Bernoulli vbool439_B;
		// Messages to uses of 'vbool175'
		public Bernoulli[] vbool175_uses_F;
		// The constant 'vBernoulli5'
		public Bernoulli vBernoulli5;
		// Message to definition of 'vbool334'
		public Bernoulli vbool334_B;
		// Messages to uses of 'vbool76'
		public Bernoulli[] vbool76_uses_F;
		// The constant 'vBernoulli6'
		public Bernoulli vBernoulli6;
		// Message to definition of 'vbool469'
		public Bernoulli vbool469_B;
		// Messages to uses of 'vbool97'
		public Bernoulli[] vbool97_uses_F;
		// Message to definition of 'vbool318'
		public Bernoulli vbool318_B;
		// Messages to uses of 'vbool58'
		public Bernoulli[] vbool58_uses_F;
		// Message to definition of 'vbool342'
		public Bernoulli vbool342_B;
		// Messages to uses of 'vbool120'
		public Bernoulli[] vbool120_uses_F;
		// Message to definition of 'vbool310'
		public Bernoulli vbool310_B;
		// Messages to uses of 'vbool50'
		public Bernoulli[] vbool50_uses_F;
		// Message to definition of 'vbool326'
		public Bernoulli vbool326_B;
		// Messages to uses of 'vbool128'
		public Bernoulli[] vbool128_uses_F;
		// Message to definition of 'vbool350'
		public Bernoulli vbool350_B;
		// Messages to uses of 'vbool136'
		public Bernoulli[] vbool136_uses_F;
		// Message to definition of 'vbool294'
		public Bernoulli vbool294_B;
		// Messages to uses of 'vbool6'
		public Bernoulli[] vbool6_uses_F;
		// Message to definition of 'vbool358'
		public Bernoulli vbool358_B;
		// Message to definition of 'vbool366'
		public Bernoulli vbool366_B;
		// Messages to uses of 'vbool24'
		public Bernoulli[] vbool24_uses_F;
		// Message to definition of 'vbool302'
		public Bernoulli vbool302_B;
		// Messages to uses of 'vbool32'
		public Bernoulli[] vbool32_uses_F;
		// Message to marginal of 'vbool431'
		public Bernoulli vbool431_marginal_B;
		// Message to marginal of 'vbool470'
		public Bernoulli vbool470_marginal_B;
		// Message to marginal of 'vbool439'
		public Bernoulli vbool439_marginal_B;
		// Message to marginal of 'vbool334'
		public Bernoulli vbool334_marginal_B;
		// Message to marginal of 'vbool469'
		public Bernoulli vbool469_marginal_B;
		// Message to marginal of 'vbool318'
		public Bernoulli vbool318_marginal_B;
		// Message to marginal of 'vbool342'
		public Bernoulli vbool342_marginal_B;
		// Message to marginal of 'vbool310'
		public Bernoulli vbool310_marginal_B;
		// Message to marginal of 'vbool326'
		public Bernoulli vbool326_marginal_B;
		// Message to marginal of 'vbool350'
		public Bernoulli vbool350_marginal_B;
		// Message to marginal of 'vbool294'
		public Bernoulli vbool294_marginal_B;
		// Message to marginal of 'vbool358'
		public Bernoulli vbool358_marginal_B;
		// Message to marginal of 'vbool366'
		public Bernoulli vbool366_marginal_B;
		// Message to marginal of 'vbool302'
		public Bernoulli vbool302_marginal_B;
		// Message to marginal of 'vbool149'
		public Bernoulli vbool149_marginal_B;
		// Message to marginal of 'vbool167'
		public Bernoulli vbool167_marginal_B;
		// Message to marginal of 'vbool84'
		public Bernoulli vbool84_marginal_B;
		// Message to marginal of 'vbool175'
		public Bernoulli vbool175_marginal_B;
		// Message to marginal of 'vbool76'
		public Bernoulli vbool76_marginal_B;
		// Message to marginal of 'vbool97'
		public Bernoulli vbool97_marginal_B;
		// Message to marginal of 'vbool58'
		public Bernoulli vbool58_marginal_B;
		// Message to marginal of 'vbool120'
		public Bernoulli vbool120_marginal_B;
		// Message to marginal of 'vbool50'
		public Bernoulli vbool50_marginal_B;
		// Message to marginal of 'vbool128'
		public Bernoulli vbool128_marginal_B;
		// Message to marginal of 'vbool136'
		public Bernoulli vbool136_marginal_B;
		// Message to marginal of 'vbool6'
		public Bernoulli vbool6_marginal_B;
		// Message to marginal of 'vbool24'
		public Bernoulli vbool24_marginal_B;
		// Message to marginal of 'vbool32'
		public Bernoulli vbool32_marginal_B;
		#endregion

		#region Methods
		/// <summary>
		/// Configures constant values that will not change during the lifetime of the class.
		/// </summary>
		/// <remarks>
		/// This method should be called once only after the class is instantiated.  In future, it will likely become
		/// the class constructor.
		/// </remarks>
		public void Reset()
		{
			// Create array for 'vbool149_uses' backwards messages.
			this.vbool149_uses_B = new Bernoulli[2];
			this.vBernoulli157 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool149_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli157);
			}
			this.vbool149_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli157);
			// Message to 'vbool149' from Random factor
			this.vbool149_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli157);
			// Create array for 'vbool167_uses' backwards messages.
			this.vbool167_uses_B = new Bernoulli[2];
			this.vBernoulli175 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool167_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli175);
			}
			this.vbool167_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli175);
			// Message to 'vbool167' from Random factor
			this.vbool167_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli175);
			// Create array for 'vbool431_uses' backwards messages.
			this.vbool431_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool431_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool431_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool84_uses' backwards messages.
			this.vbool84_uses_B = new Bernoulli[2];
			this.vBernoulli92 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool84_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli92);
			}
			this.vbool84_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli92);
			// Message to 'vbool84' from Random factor
			this.vbool84_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli92);
			// Create array for 'vbool470_uses' backwards messages.
			this.vbool470_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool470_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool470_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool175_uses' backwards messages.
			this.vbool175_uses_B = new Bernoulli[2];
			this.vBernoulli183 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool175_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli183);
			}
			this.vbool175_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli183);
			// Message to 'vbool175' from Random factor
			this.vbool175_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli183);
			// Create array for 'vbool439_uses' backwards messages.
			this.vbool439_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool439_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool439_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool76_uses' backwards messages.
			this.vbool76_uses_B = new Bernoulli[2];
			this.vBernoulli84 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool76_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli84);
			}
			this.vbool76_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli84);
			// Message to 'vbool76' from Random factor
			this.vbool76_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli84);
			// Create array for 'vbool334_uses' backwards messages.
			this.vbool334_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool334_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool334_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool97_uses' backwards messages.
			this.vbool97_uses_B = new Bernoulli[2];
			this.vBernoulli105 = new Bernoulli(0.01);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool97_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli105);
			}
			this.vbool97_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli105);
			// Message to 'vbool97' from Random factor
			this.vbool97_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli105);
			// Create array for 'vbool469_uses' backwards messages.
			this.vbool469_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool469_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool469_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool58_uses' backwards messages.
			this.vbool58_uses_B = new Bernoulli[3];
			this.vBernoulli66 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool58_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli66);
			}
			this.vbool58_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli66);
			// Message to 'vbool58' from Random factor
			this.vbool58_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli66);
			// Create array for 'vbool318_uses' backwards messages.
			this.vbool318_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool318_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool318_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool120_uses' backwards messages.
			this.vbool120_uses_B = new Bernoulli[2];
			this.vBernoulli128 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool120_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli128);
			}
			this.vbool120_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli128);
			// Message to 'vbool120' from Random factor
			this.vbool120_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli128);
			// Create array for 'vbool342_uses' backwards messages.
			this.vbool342_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool342_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool342_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool50_uses' backwards messages.
			this.vbool50_uses_B = new Bernoulli[2];
			this.vBernoulli58 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool50_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli58);
			}
			this.vbool50_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli58);
			// Message to 'vbool50' from Random factor
			this.vbool50_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli58);
			// Create array for 'vbool310_uses' backwards messages.
			this.vbool310_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool310_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool310_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool128_uses' backwards messages.
			this.vbool128_uses_B = new Bernoulli[2];
			this.vBernoulli136 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool128_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli136);
			}
			this.vbool128_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli136);
			// Message to 'vbool128' from Random factor
			this.vbool128_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli136);
			// Create array for 'vbool326_uses' backwards messages.
			this.vbool326_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool326_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool326_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool136_uses' backwards messages.
			this.vbool136_uses_B = new Bernoulli[3];
			this.vBernoulli144 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool136_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli144);
			}
			this.vbool136_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli144);
			// Message to 'vbool136' from Random factor
			this.vbool136_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli144);
			// Create array for 'vbool350_uses' backwards messages.
			this.vbool350_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool350_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool350_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool6_uses' backwards messages.
			this.vbool6_uses_B = new Bernoulli[1];
			this.vBernoulli14 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool6_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli14);
			}
			this.vbool6_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli14);
			// Message to 'vbool6' from Random factor
			this.vbool6_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli14);
			// Create array for 'vbool294_uses' backwards messages.
			this.vbool294_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool294_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool294_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool358_uses' backwards messages.
			this.vbool358_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool358_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool358_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool24_uses' backwards messages.
			this.vbool24_uses_B = new Bernoulli[2];
			this.vBernoulli32 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool24_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli32);
			}
			this.vbool24_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli32);
			// Message to 'vbool24' from Random factor
			this.vbool24_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli32);
			// Create array for 'vbool366_uses' backwards messages.
			this.vbool366_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool366_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool366_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool32_uses' backwards messages.
			this.vbool32_uses_B = new Bernoulli[1];
			this.vBernoulli40 = new Bernoulli(0.5);
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool32_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli40);
			}
			this.vbool32_F = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli40);
			// Message to 'vbool32' from Random factor
			this.vbool32_F = UnaryOp<bool>.RandomAverageConditional<Bernoulli>(this.vBernoulli40);
			// Create array for 'vbool302_uses' backwards messages.
			this.vbool302_uses_B = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool302_uses_B[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			}
			this.vbool302_F = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool431_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool167_uses' forwards messages.
			this.vbool167_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool167_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli175);
			}
			this.vbool470_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool84_uses' forwards messages.
			this.vbool84_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool84_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli92);
			}
			// Create array for 'vbool149_uses' forwards messages.
			this.vbool149_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool149_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli157);
			}
			this.vbool439_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Create array for 'vbool175_uses' forwards messages.
			this.vbool175_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool175_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli183);
			}
			this.vBernoulli5 = new Bernoulli(0.9);
			// Message to 'vbool431_uses' from EqualRandom factor
			this.vbool431_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool439_uses' from EqualRandom factor
			this.vbool439_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool334_uses' from EqualRandom factor
			this.vbool334_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool318_uses' from EqualRandom factor
			this.vbool318_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool342_uses' from EqualRandom factor
			this.vbool342_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool310_uses' from EqualRandom factor
			this.vbool310_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool326_uses' from EqualRandom factor
			this.vbool326_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool350_uses' from EqualRandom factor
			this.vbool350_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool294_uses' from EqualRandom factor
			this.vbool294_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool358_uses' from EqualRandom factor
			this.vbool358_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool366_uses' from EqualRandom factor
			this.vbool366_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool302_uses' from EqualRandom factor
			this.vbool302_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli5);
			// Message to 'vbool431' from ReplicateWithMarginal factor
			this.vbool431_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool431_uses_B, this.vbool431_B);
			// Message to 'vbool439' from ReplicateWithMarginal factor
			this.vbool439_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool439_uses_B, this.vbool439_B);
			this.vbool334_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool334' from ReplicateWithMarginal factor
			this.vbool334_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool334_uses_B, this.vbool334_B);
			// Create array for 'vbool76_uses' forwards messages.
			this.vbool76_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool76_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli84);
			}
			this.vBernoulli6 = new Bernoulli(0.9);
			// Message to 'vbool470_uses' from EqualRandom factor
			this.vbool470_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli6);
			// Message to 'vbool469_uses' from EqualRandom factor
			this.vbool469_uses_B[0] = ConstrainEqualRandomOp<bool>.ValueAverageConditional<Bernoulli>(this.vBernoulli6);
			// Message to 'vbool470' from ReplicateWithMarginal factor
			this.vbool470_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool470_uses_B, this.vbool470_B);
			this.vbool469_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool469' from ReplicateWithMarginal factor
			this.vbool469_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool469_uses_B, this.vbool469_B);
			// Create array for 'vbool97_uses' forwards messages.
			this.vbool97_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool97_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli105);
			}
			this.vbool318_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool318' from ReplicateWithMarginal factor
			this.vbool318_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool318_uses_B, this.vbool318_B);
			// Create array for 'vbool58_uses' forwards messages.
			this.vbool58_uses_F = new Bernoulli[3];
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool58_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli66);
			}
			this.vbool342_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool342' from ReplicateWithMarginal factor
			this.vbool342_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool342_uses_B, this.vbool342_B);
			// Create array for 'vbool120_uses' forwards messages.
			this.vbool120_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool120_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli128);
			}
			this.vbool310_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool310' from ReplicateWithMarginal factor
			this.vbool310_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool310_uses_B, this.vbool310_B);
			// Create array for 'vbool50_uses' forwards messages.
			this.vbool50_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool50_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli58);
			}
			this.vbool326_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool326' from ReplicateWithMarginal factor
			this.vbool326_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool326_uses_B, this.vbool326_B);
			// Create array for 'vbool128_uses' forwards messages.
			this.vbool128_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool128_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli136);
			}
			this.vbool350_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool350' from ReplicateWithMarginal factor
			this.vbool350_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool350_uses_B, this.vbool350_B);
			// Create array for 'vbool136_uses' forwards messages.
			this.vbool136_uses_F = new Bernoulli[3];
			for(int _ind0 = 0; _ind0<3; _ind0++)
			{
				this.vbool136_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli144);
			}
			this.vbool294_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool294' from ReplicateWithMarginal factor
			this.vbool294_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool294_uses_B, this.vbool294_B);
			// Create array for 'vbool6_uses' forwards messages.
			this.vbool6_uses_F = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool6_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli14);
			}
			// Message to 'vbool6_uses' from UsesEqualDef factor
			this.vbool6_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool6_uses_B, this.vbool6_F, 0, this.vbool6_uses_F[0]);
			// Message to 'vbool50_uses' from AreEqual factor
			this.vbool50_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool294_B, this.vbool6_uses_F[0]);
			// Message to 'vbool50_uses' from UsesEqualDef factor
			this.vbool50_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool50_uses_B, this.vbool50_F, 0, this.vbool50_uses_F[0]);
			// Message to 'vbool58_uses' from AreEqual factor
			this.vbool58_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool310_B, this.vbool50_uses_F[0]);
			this.vbool358_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool358' from ReplicateWithMarginal factor
			this.vbool358_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool358_uses_B, this.vbool358_B);
			this.vbool366_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool366' from ReplicateWithMarginal factor
			this.vbool366_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool366_uses_B, this.vbool366_B);
			// Create array for 'vbool24_uses' forwards messages.
			this.vbool24_uses_F = new Bernoulli[2];
			for(int _ind0 = 0; _ind0<2; _ind0++)
			{
				this.vbool24_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli32);
			}
			this.vbool302_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			// Message to 'vbool302' from ReplicateWithMarginal factor
			this.vbool302_B = ReplicateOp.DefAverageConditional<Bernoulli>(this.vbool302_uses_B, this.vbool302_B);
			// Create array for 'vbool32_uses' forwards messages.
			this.vbool32_uses_F = new Bernoulli[1];
			for(int _ind0 = 0; _ind0<1; _ind0++)
			{
				this.vbool32_uses_F[_ind0] = ArrayHelper.MakeUniform<Bernoulli>(this.vBernoulli40);
			}
			// Message to 'vbool32_uses' from UsesEqualDef factor
			this.vbool32_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool32_uses_B, this.vbool32_F, 0, this.vbool32_uses_F[0]);
			// Message to 'vbool24_uses' from AreEqual factor
			this.vbool24_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool302_B, this.vbool32_uses_F[0]);
			// Message to 'vbool24_uses' from UsesEqualDef factor
			this.vbool24_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool24_uses_B, this.vbool24_F, 0, this.vbool24_uses_F[0]);
			// Message to 'vbool136_uses' from AreEqual factor
			this.vbool136_uses_B[2] = BooleanAreEqualOp.AAverageConditional(this.vbool366_B, this.vbool24_uses_F[0]);
		}

		/// <summary>
		/// Creates message arrays and initialises their values ready for inference to be performed.
		/// </summary>
		/// <remarks>
		/// This method should be called once each time inference is performed. Since the initialisation
		/// procedure normally dependson external values such as priors and array sizes, all external
		/// values must be set before calling this method.
		/// 
		/// As well as initialising message arrays, this method also performs any message passing that
		/// the scheduler determines need only be carried out once.
		/// </remarks>
		public void Initialise()
		{
			this.vbool431_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool470_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool439_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool334_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool469_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool318_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool342_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool310_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool326_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool350_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool294_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool358_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool366_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool302_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(new Bernoulli());
			this.vbool149_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli157);
			this.vbool167_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli175);
			this.vbool84_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli92);
			this.vbool175_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli183);
			this.vbool76_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli84);
			this.vbool97_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli105);
			this.vbool58_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli66);
			this.vbool120_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli128);
			this.vbool50_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli58);
			this.vbool128_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli136);
			this.vbool136_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli144);
			this.vbool6_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli14);
			this.vbool24_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli32);
			this.vbool32_marginal_B = ArrayHelper.MakeUniform<Bernoulli>(vBernoulli40);
		}

		/// <summary>
		/// Performs one iteration of inference.
		/// </summary>
		/// <remarks>
		/// This method should be called multiple times, after calling Initialise(), in order to perform
		/// multiple iterations of message passing.  You can call methods to retrieve posterior marginals
		/// at any time - the returned marginal will be the estimated marginal given the current state of
		/// the message passing algorithm.  This can be useful for monitoring convergence of the algorithm.
		/// 
		/// Where the scheduler has determined inference can be performed without iteration, this method
		/// does nothing.
		/// </remarks>
		public void Update()
		{
			// Message to 'vbool58_uses' from UsesEqualDef factor
			this.vbool58_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool58_uses_B, this.vbool58_F, 0, this.vbool58_uses_F[0]);
			// Message to 'vbool76_uses' from AreEqual factor
			this.vbool76_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool318_B, this.vbool58_uses_F[0]);
			// Message to 'vbool76_uses' from UsesEqualDef factor
			this.vbool76_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool76_uses_B, this.vbool76_F, 0, this.vbool76_uses_F[0]);
			// Message to 'vbool84_uses' from AreEqual factor
			this.vbool84_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool334_B, this.vbool76_uses_F[0]);
			// Message to 'vbool84_uses' from UsesEqualDef factor
			this.vbool84_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool84_uses_B, this.vbool84_F, 0, this.vbool84_uses_F[0]);
			// Message to 'vbool149_uses' from AreEqual factor
			this.vbool149_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool470_B, this.vbool84_uses_F[0]);
			// Message to 'vbool149_uses' from UsesEqualDef factor
			this.vbool149_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool149_uses_B, this.vbool149_F, 0, this.vbool149_uses_F[0]);
			// Message to 'vbool167_uses' from AreEqual factor
			this.vbool167_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool431_B, this.vbool149_uses_F[0]);
			// Message to 'vbool167_uses' from UsesEqualDef factor
			this.vbool167_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool167_uses_B, this.vbool167_F, 1, this.vbool167_uses_F[1]);
			// Message to 'vbool175_uses' from AreEqual factor
			this.vbool175_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool439_B, this.vbool167_uses_F[1]);
			// Message to 'vbool175_uses' from UsesEqualDef factor
			this.vbool175_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool175_uses_B, this.vbool175_F, 1, this.vbool175_uses_F[1]);
			// Message to 'vbool97_uses' from AreEqual factor
			this.vbool97_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool469_B, this.vbool175_uses_F[1]);
			// Message to 'vbool97_uses' from UsesEqualDef factor
			this.vbool97_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool97_uses_B, this.vbool97_F, 1, this.vbool97_uses_F[1]);
			// Message to 'vbool120_uses' from AreEqual factor
			this.vbool120_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool342_B, this.vbool97_uses_F[1]);
			// Message to 'vbool120_uses' from UsesEqualDef factor
			this.vbool120_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool120_uses_B, this.vbool120_F, 1, this.vbool120_uses_F[1]);
			// Message to 'vbool136_uses' from AreEqual factor
			this.vbool136_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool350_B, this.vbool120_uses_F[1]);
			// Message to 'vbool136_uses' from UsesEqualDef factor
			this.vbool136_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool136_uses_B, this.vbool136_F, 1, this.vbool136_uses_F[1]);
			// Message to 'vbool128_uses' from AreEqual factor
			this.vbool128_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool358_B, this.vbool136_uses_F[1]);
			// Message to 'vbool128_uses' from UsesEqualDef factor
			this.vbool128_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool128_uses_B, this.vbool128_F, 0, this.vbool128_uses_F[0]);
			// Message to 'vbool58_uses' from AreEqual factor
			this.vbool58_uses_B[2] = BooleanAreEqualOp.AAverageConditional(this.vbool326_B, this.vbool128_uses_F[0]);
			// Message to 'vbool136_uses' from UsesEqualDef factor
			this.vbool136_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool136_uses_B, this.vbool136_F, 0, this.vbool136_uses_F[0]);
			// Message to 'vbool120_uses' from AreEqual factor
			this.vbool120_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool350_B, this.vbool136_uses_F[0]);
			// Message to 'vbool120_marginal' from UsesEqualDef factor
			this.vbool120_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool120_uses_B, this.vbool120_F, this.vbool120_marginal_B);
			// Message to 'vbool350' from AreEqual factor
			this.vbool350_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool136_uses_F[0], this.vbool120_uses_F[1]);
			// Message to 'vbool350_marginal' from ReplicateWithMarginal factor
			this.vbool350_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool350_uses_B, this.vbool350_F, this.vbool350_marginal_B);
			// Message to 'vbool120_uses' from UsesEqualDef factor
			this.vbool120_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool120_uses_B, this.vbool120_F, 0, this.vbool120_uses_F[0]);
			// Message to 'vbool97_uses' from AreEqual factor
			this.vbool97_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool342_B, this.vbool120_uses_F[0]);
			// Message to 'vbool97_marginal' from UsesEqualDef factor
			this.vbool97_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool97_uses_B, this.vbool97_F, this.vbool97_marginal_B);
			// Message to 'vbool342' from AreEqual factor
			this.vbool342_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool97_uses_F[1], this.vbool120_uses_F[0]);
			// Message to 'vbool342_marginal' from ReplicateWithMarginal factor
			this.vbool342_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool342_uses_B, this.vbool342_F, this.vbool342_marginal_B);
			// Message to 'vbool97_uses' from UsesEqualDef factor
			this.vbool97_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool97_uses_B, this.vbool97_F, 0, this.vbool97_uses_F[0]);
			// Message to 'vbool175_uses' from AreEqual factor
			this.vbool175_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool469_B, this.vbool97_uses_F[0]);
			// Message to 'vbool175_marginal' from UsesEqualDef factor
			this.vbool175_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool175_uses_B, this.vbool175_F, this.vbool175_marginal_B);
			// Message to 'vbool469' from AreEqual factor
			this.vbool469_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool97_uses_F[0], this.vbool175_uses_F[1]);
			// Message to 'vbool469_marginal' from ReplicateWithMarginal factor
			this.vbool469_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool469_uses_B, this.vbool469_F, this.vbool469_marginal_B);
			// Message to 'vbool175_uses' from UsesEqualDef factor
			this.vbool175_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool175_uses_B, this.vbool175_F, 0, this.vbool175_uses_F[0]);
			// Message to 'vbool167_uses' from AreEqual factor
			this.vbool167_uses_B[1] = BooleanAreEqualOp.BAverageConditional(this.vbool439_B, this.vbool175_uses_F[0]);
			// Message to 'vbool167_marginal' from UsesEqualDef factor
			this.vbool167_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool167_uses_B, this.vbool167_F, this.vbool167_marginal_B);
			// Message to 'vbool439' from AreEqual factor
			this.vbool439_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool175_uses_F[0], this.vbool167_uses_F[1]);
			// Message to 'vbool439_marginal' from ReplicateWithMarginal factor
			this.vbool439_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool439_uses_B, this.vbool439_F, this.vbool439_marginal_B);
			// Message to 'vbool167_uses' from UsesEqualDef factor
			this.vbool167_uses_F[0] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool167_uses_B, this.vbool167_F, 0, this.vbool167_uses_F[0]);
			// Message to 'vbool149_uses' from AreEqual factor
			this.vbool149_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool431_B, this.vbool167_uses_F[0]);
			// Message to 'vbool149_marginal' from UsesEqualDef factor
			this.vbool149_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool149_uses_B, this.vbool149_F, this.vbool149_marginal_B);
			// Message to 'vbool431' from AreEqual factor
			this.vbool431_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool149_uses_F[0], this.vbool167_uses_F[0]);
			// Message to 'vbool431_marginal' from ReplicateWithMarginal factor
			this.vbool431_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool431_uses_B, this.vbool431_F, this.vbool431_marginal_B);
			// Message to 'vbool149_uses' from UsesEqualDef factor
			this.vbool149_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool149_uses_B, this.vbool149_F, 1, this.vbool149_uses_F[1]);
			// Message to 'vbool84_uses' from AreEqual factor
			this.vbool84_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool470_B, this.vbool149_uses_F[1]);
			// Message to 'vbool84_marginal' from UsesEqualDef factor
			this.vbool84_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool84_uses_B, this.vbool84_F, this.vbool84_marginal_B);
			// Message to 'vbool470' from AreEqual factor
			this.vbool470_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool84_uses_F[0], this.vbool149_uses_F[1]);
			// Message to 'vbool470_marginal' from ReplicateWithMarginal factor
			this.vbool470_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool470_uses_B, this.vbool470_F, this.vbool470_marginal_B);
			// Message to 'vbool84_uses' from UsesEqualDef factor
			this.vbool84_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool84_uses_B, this.vbool84_F, 1, this.vbool84_uses_F[1]);
			// Message to 'vbool76_uses' from AreEqual factor
			this.vbool76_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool334_B, this.vbool84_uses_F[1]);
			// Message to 'vbool76_marginal' from UsesEqualDef factor
			this.vbool76_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool76_uses_B, this.vbool76_F, this.vbool76_marginal_B);
			// Message to 'vbool334' from AreEqual factor
			this.vbool334_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool84_uses_F[1], this.vbool76_uses_F[0]);
			// Message to 'vbool334_marginal' from ReplicateWithMarginal factor
			this.vbool334_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool334_uses_B, this.vbool334_F, this.vbool334_marginal_B);
			// Message to 'vbool76_uses' from UsesEqualDef factor
			this.vbool76_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool76_uses_B, this.vbool76_F, 1, this.vbool76_uses_F[1]);
			// Message to 'vbool58_uses' from AreEqual factor
			this.vbool58_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool318_B, this.vbool76_uses_F[1]);
			// Message to 'vbool58_marginal' from UsesEqualDef factor
			this.vbool58_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool58_uses_B, this.vbool58_F, this.vbool58_marginal_B);
			// Message to 'vbool318' from AreEqual factor
			this.vbool318_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool58_uses_F[0], this.vbool76_uses_F[1]);
			// Message to 'vbool318_marginal' from ReplicateWithMarginal factor
			this.vbool318_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool318_uses_B, this.vbool318_F, this.vbool318_marginal_B);
			// Message to 'vbool58_uses' from UsesEqualDef factor
			this.vbool58_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool58_uses_B, this.vbool58_F, 1, this.vbool58_uses_F[1]);
			// Message to 'vbool50_uses' from AreEqual factor
			this.vbool50_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool310_B, this.vbool58_uses_F[1]);
			// Message to 'vbool50_marginal' from UsesEqualDef factor
			this.vbool50_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool50_uses_B, this.vbool50_F, this.vbool50_marginal_B);
			// Message to 'vbool310' from AreEqual factor
			this.vbool310_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool58_uses_F[1], this.vbool50_uses_F[0]);
			// Message to 'vbool310_marginal' from ReplicateWithMarginal factor
			this.vbool310_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool310_uses_B, this.vbool310_F, this.vbool310_marginal_B);
			// Message to 'vbool58_uses' from UsesEqualDef factor
			this.vbool58_uses_F[2] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool58_uses_B, this.vbool58_F, 2, this.vbool58_uses_F[2]);
			// Message to 'vbool128_uses' from AreEqual factor
			this.vbool128_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool326_B, this.vbool58_uses_F[2]);
			// Message to 'vbool128_marginal' from UsesEqualDef factor
			this.vbool128_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool128_uses_B, this.vbool128_F, this.vbool128_marginal_B);
			// Message to 'vbool326' from AreEqual factor
			this.vbool326_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool58_uses_F[2], this.vbool128_uses_F[0]);
			// Message to 'vbool326_marginal' from ReplicateWithMarginal factor
			this.vbool326_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool326_uses_B, this.vbool326_F, this.vbool326_marginal_B);
			// Message to 'vbool128_uses' from UsesEqualDef factor
			this.vbool128_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool128_uses_B, this.vbool128_F, 1, this.vbool128_uses_F[1]);
			// Message to 'vbool136_uses' from AreEqual factor
			this.vbool136_uses_B[1] = BooleanAreEqualOp.AAverageConditional(this.vbool358_B, this.vbool128_uses_F[1]);
			// Message to 'vbool136_marginal' from UsesEqualDef factor
			this.vbool136_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool136_uses_B, this.vbool136_F, this.vbool136_marginal_B);
			// Message to 'vbool358' from AreEqual factor
			this.vbool358_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool136_uses_F[1], this.vbool128_uses_F[1]);
			// Message to 'vbool358_marginal' from ReplicateWithMarginal factor
			this.vbool358_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool358_uses_B, this.vbool358_F, this.vbool358_marginal_B);
			// Message to 'vbool50_uses' from UsesEqualDef factor
			this.vbool50_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool50_uses_B, this.vbool50_F, 1, this.vbool50_uses_F[1]);
			// Message to 'vbool6_uses' from AreEqual factor
			this.vbool6_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool294_B, this.vbool50_uses_F[1]);
			// Message to 'vbool6_marginal' from UsesEqualDef factor
			this.vbool6_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool6_uses_B, this.vbool6_F, this.vbool6_marginal_B);
			// Message to 'vbool294' from AreEqual factor
			this.vbool294_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool6_uses_F[0], this.vbool50_uses_F[1]);
			// Message to 'vbool294_marginal' from ReplicateWithMarginal factor
			this.vbool294_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool294_uses_B, this.vbool294_F, this.vbool294_marginal_B);
			// Message to 'vbool136_uses' from UsesEqualDef factor
			this.vbool136_uses_F[2] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool136_uses_B, this.vbool136_F, 2, this.vbool136_uses_F[2]);
			// Message to 'vbool24_uses' from AreEqual factor
			this.vbool24_uses_B[0] = BooleanAreEqualOp.BAverageConditional(this.vbool366_B, this.vbool136_uses_F[2]);
			// Message to 'vbool24_marginal' from UsesEqualDef factor
			this.vbool24_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool24_uses_B, this.vbool24_F, this.vbool24_marginal_B);
			// Message to 'vbool366' from AreEqual factor
			this.vbool366_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool136_uses_F[2], this.vbool24_uses_F[0]);
			// Message to 'vbool366_marginal' from ReplicateWithMarginal factor
			this.vbool366_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool366_uses_B, this.vbool366_F, this.vbool366_marginal_B);
			// Message to 'vbool24_uses' from UsesEqualDef factor
			this.vbool24_uses_F[1] = UsesEqualDefOp.UsesAverageConditional<Bernoulli>(this.vbool24_uses_B, this.vbool24_F, 1, this.vbool24_uses_F[1]);
			// Message to 'vbool32_uses' from AreEqual factor
			this.vbool32_uses_B[0] = BooleanAreEqualOp.AAverageConditional(this.vbool302_B, this.vbool24_uses_F[1]);
			// Message to 'vbool32_marginal' from UsesEqualDef factor
			this.vbool32_marginal_B = UsesEqualDefOp.MarginalAverageConditional<Bernoulli>(this.vbool32_uses_B, this.vbool32_F, this.vbool32_marginal_B);
			// Message to 'vbool302' from AreEqual factor
			this.vbool302_F = BooleanAreEqualOp.AreEqualAverageConditional(this.vbool32_uses_F[0], this.vbool24_uses_F[1]);
			// Message to 'vbool302_marginal' from ReplicateWithMarginal factor
			this.vbool302_marginal_B = ReplicateOp.MarginalAverageConditional<Bernoulli>(this.vbool302_uses_B, this.vbool302_F, this.vbool302_marginal_B);
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool120' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool120Marginal()
		{
			return this.vbool120_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool350' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool350Marginal()
		{
			return this.vbool350_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool97' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool97Marginal()
		{
			return this.vbool97_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool342' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool342Marginal()
		{
			return this.vbool342_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool175' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool175Marginal()
		{
			return this.vbool175_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool469' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool469Marginal()
		{
			return this.vbool469_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool167' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool167Marginal()
		{
			return this.vbool167_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool439' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool439Marginal()
		{
			return this.vbool439_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool149' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool149Marginal()
		{
			return this.vbool149_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool431' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool431Marginal()
		{
			return this.vbool431_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool84' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool84Marginal()
		{
			return this.vbool84_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool470' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool470Marginal()
		{
			return this.vbool470_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool76' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool76Marginal()
		{
			return this.vbool76_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool334' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool334Marginal()
		{
			return this.vbool334_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool58' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool58Marginal()
		{
			return this.vbool58_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool318' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool318Marginal()
		{
			return this.vbool318_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool50' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool50Marginal()
		{
			return this.vbool50_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool310' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool310Marginal()
		{
			return this.vbool310_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool128' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool128Marginal()
		{
			return this.vbool128_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool326' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool326Marginal()
		{
			return this.vbool326_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool136' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool136Marginal()
		{
			return this.vbool136_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool358' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool358Marginal()
		{
			return this.vbool358_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool6' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool6Marginal()
		{
			return this.vbool6_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool294' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool294Marginal()
		{
			return this.vbool294_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool24' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool24Marginal()
		{
			return this.vbool24_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool366' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool366Marginal()
		{
			return this.vbool366_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool32' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool32Marginal()
		{
			return this.vbool32_marginal_B;
		}

		/// <summary>
		/// Returns the marginal distribution for 'vbool302' given by the current state of the
		/// message passing algorithm.
		/// </summary>
		/// <returns>The marginal distribution</returns>
		public Bernoulli Vbool302Marginal()
		{
			return this.vbool302_marginal_B;
		}

		#endregion

	}

}
